home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / PRUS101.ZIP / FDATE.DOK < prev    next >
Text File  |  1995-01-11  |  23KB  |  527 lines

  1.  
  2.                   /////////////////////\\\\\\\\\\\\\\\\\\\\\\\
  3.                        Dokumentation zur FIDO Unit FDATE
  4.                   \\\\\\\\\\\\\\\\\\\\\///////////////////////
  5.  
  6.                                  RELEASE 1.03
  7.                                  ^^^^^^^^^^^^
  8.  
  9.   =========================================================================
  10.   Autor: Peter Holschbach, 2:2450/660.3 @ FidoNet, Remscheid, 20.06.1994
  11.   =========================================================================
  12.  
  13.      1. Date :
  14.      -----------
  15.         Die Unit FDATE.PAS stellt Funktionen und Prozeduren zur Verfügung,
  16.         die sich mit der Uhrzeit und dem Datum befassen.
  17.  
  18.         Dies ist eine Low Level Unit.  Sie benötigt keinerlei Routinen
  19.         anderer  Units,  mit  Ausnahme  der in Turbo Pascals (6.0 oder
  20.         höher) Unit-Library TURBO.TPL enhaltenen Standard-Units.
  21.  
  22.  
  23.      2. Kurzbeschreibung:
  24.      --------------------
  25.         CDaysOfMonth ......... enthält in zwei Feldern, die Anzahl der
  26.                                Tage für einen Monat für ein normales
  27.                                und ein Schaltjahr.
  28.         CDayOfWeekAmerican ... enthält die englischen Namen der Wochen-
  29.                                tage, abgekürzt mit drei Zeichen.
  30.         CDayOfWeekGerman ..... enthält die deutschen Namen der Wochen-
  31.                                tage, abgekürzt mit drei Zeichen.
  32.         CMonthAmerican ....... enthält die englischen Namen der Monate
  33.                                abgekürzt auf drei Zeichen.
  34.         CMonthGerman ......... enthält die deutschen Namen der Monate
  35.                                abgekürzt auf drei Zeichen.
  36.         DateFormat ........... typisierte Konstante. Dient zur länder-
  37.                                speziefischen Anpassung des Erscheinungs-
  38.                                bildes des Datums.
  39.         DateSeperator ........ typisierte Konstante. Das angegbene Zeichen
  40.                                wird als Trennzeichen, bei der Umwandlung
  41.                                eines Datums in eine Zeichenkette,
  42.                                verwendet.
  43.         DayDiff .............. berechnet die Anzahl von Tagen, zwischen
  44.                                zwei Daten.
  45.         DayNumber ............ berechnet die Tage die seit dem 01.01.0000
  46.                                bis zu einem angegbenen Datum vergangen
  47.                                sind.
  48.         DayOfWeek ............ gibt den Wochentag zurück. Der Wert kann
  49.                                direkt als "Zeiger" in CDayOfWeekXXX
  50.                                verwendet werden.
  51.         DayOfYear ............ berechnet den Tag für das übergebene Datum.
  52.         GetCurrentDateString . liefert das aktuelle Datum als Zeichenkette
  53.                                zurück. Die typisierten Konstanten
  54.                                "DateSeperator" und "DateFormat" werden von
  55.                                der Funktion zur Formatierung herangezogen.
  56.         GetDate .............. Ersatz der Funktion aus der Unit DOS.
  57.                                Liefert das aktuelle Datum.
  58.         GetDateString ........ liefert ein übergebenes Datum als Zeichen-
  59.                                kette zurück (siehe GetCurrentDateString)
  60.         GetCurrentTimeString . liefert die aktuelle Uhrzeit als Zeichen-
  61.                                kette zurück. Alle Zahlen werden zweistellig
  62.                                mit führender Null ausgegeben. Das Trenn-
  63.                                zeichen zwischen den Zahlen wird durch die
  64.                                typisierte Konstante "TimeSeperator"
  65.                                bestimmt.
  66.         GetTime .............. Ersatz der Funktion aus der Unit DOS.
  67.                                Liefert die aktuelle Uhrzeit.
  68.         GetTimeString ........ liefert eine übergebene Uhrzeit als Zeichen-
  69.                                kette zurück. Siehe (GetCurrentTimeString)
  70.         GetUnixTime .......... liefert die Unix typische Zeit als Sekunden
  71.                                seit dem 01.01.1970
  72.         IsLeapYear ........... prüft ob das angegeben Jahr ein Schaltjahr
  73.                                ist.
  74.         TimeSeperator ........ typisierte Konstante. Das angegbene Zeichen
  75.                                wird als Trennzeichen, bei der Umwandlung einer
  76.                                Uhrzeit in eine Zeichenkette, verwendet.
  77.         ValidDate  ........... prüft ein Datum auf sinnvolle Werte.
  78.         WeekOfYear ........... berechnet die Kalenderwoche für das aktuelle
  79.                                Datum. Wie im richtigen Leben wird alles vor
  80.                                dem ersten Montag des Jahres der letzten
  81.                                Kalenderwoche des Vorjahres zugeschlagen.
  82.  
  83.  
  84.      3. Detaillierte Beschreibung:
  85.      -----------------------------
  86.         ===============================================================
  87.         DayDiff
  88.         ---------------------------------------------------------------
  89.         ERSTAUTOR    ...  Peter Holschbach, 2:2450/660.3 @ FidoNet
  90.  
  91.         ERSTDATUM    ...  28.06.1994    LETZTE ÄNDERUNG ...
  92.  
  93.         MODIFIKATION ...
  94.         ---------------------------------------------------------------
  95.  
  96.         BESCHREIBUNG ...  bestimmt die Anzahl von Tagen, die
  97.                           zwischen zwei Daten liegen.
  98.  
  99.         DEKLARATION  ...  DayDiff (FYear,FMonth,FDay,
  100.                                    TYear,TMonth,TDay : Word) : LongInt;
  101.  
  102.         PARAMETER    ...  FYear  - von Jahr (mit Jahrtausend)
  103.                           FMonth - von Monat
  104.                           FDay   - von Tag
  105.                           TYear  - bis Jahr (mit Jahrtausend)
  106.                           TMonth - bis Monat
  107.                           TDay   - bis Tag
  108.  
  109.         ERGEBNIS     ...  eine Variable des Typs LONGINT, die
  110.                           der Anzahl von Tagen entspricht.
  111.                           
  112.         ===============================================================
  113.         DayNumber
  114.         ---------------------------------------------------------------
  115.         ERSTAUTOR    ...  Peter Holschbach, 2:2450/660.3 @ FidoNet
  116.  
  117.         ERSTDATUM    ...  28.06.1994    LETZTE ÄNDERUNG ... 17.10.1994
  118.  
  119.         MODIFIKATION ...  casting auf LONGINT fehlte
  120.         ---------------------------------------------------------------
  121.  
  122.         BESCHREIBUNG ...  bestimmt die Anzahl von Tagen, die
  123.                           seit dem 01.01.0000 bis zum angegebenen
  124.                           Datum vergangen sind. 
  125.  
  126.         DEKLARATION  ...  DayNumber (Year,Month,Day : Word):LongInt;
  127.  
  128.         PARAMETER    ...  Year  - Jahr (mit Jahrtausend)
  129.                           Month - Monat
  130.                           Day   - Tag
  131.  
  132.         ERGEBNIS     ...  eine Variable des Typs LONGINT, die
  133.                           der Anzahl von Tagen entspricht.
  134.  
  135.         ===============================================================
  136.         DayOfWeek
  137.         ---------------------------------------------------------------
  138.         ERSTAUTOR    ...  Peter Holschbach, 2:2450/660.3 @ FidoNet
  139.  
  140.         ERSTDATUM    ...  28.06.1994    LETZTE ÄNDERUNG ...  17.10.1994
  141.  
  142.         MODIFIKATION ... zurückgegebene Zahl war falsch
  143.         ---------------------------------------------------------------
  144.  
  145.         BESCHREIBUNG ...  bestimmt den Wochentag des angegebenen Datums.
  146.  
  147.         DEKLARATION  ...  DayOfWeek (Year,Month,Day : Word):Byte;
  148.  
  149.         PARAMETER    ...  Year  - Jahr (mit Jahrtausend)
  150.                           Month - Monat
  151.                           Day   - Tag
  152.  
  153.         ERGEBNIS     ...  eine Variable des Typs BYTE, die als
  154.                           "Zeiger" in das Feld CDayOfWeekXXX verwendet
  155.                           werden kann. Die Tage werden von Montag = 1
  156.                           bis Sonntag = 7 durchnummeriert.
  157.  
  158.         ===============================================================
  159.         DayOfYear
  160.         ---------------------------------------------------------------
  161.         ERSTAUTOR    ...  Peter Holschbach, 2:2450/660.3 @ FidoNet
  162.  
  163.         ERSTDATUM    ...  28.06.1994    LETZTE ÄNDERUNG ...  28.06.1994
  164.  
  165.         MODIFIKATION ...
  166.         ---------------------------------------------------------------
  167.  
  168.         BESCHREIBUNG ...  berechnet die Anzahl der Tage vom 1.1 bis zum
  169.                           übergebenen Datum des Jahres.
  170.  
  171.         DEKLARATION  ...  Function DayOfYear (Year,Month,Day : Word):Word;
  172.  
  173.         PARAMETER    ...  Year  - Jahr (mit Jahrtausend)
  174.                           Month - Monat
  175.                           Day   - Tag
  176.  
  177.         ERGEBNIS     ...  eine Variable des Typs WORD, die die Nummer
  178.                           des Tages enthält.
  179.  
  180.         ===============================================================
  181.         GetCurrentDateString
  182.         ---------------------------------------------------------------
  183.         ERSTAUTOR    ...  Peter Holschbach, 2:2450/660.3 @ FidoNet
  184.  
  185.         ERSTDATUM    ...  26.06.1994    LETZTE ÄNDERUNG ...  26.06.1994
  186.  
  187.         MODIFIKATION ...
  188.         ---------------------------------------------------------------
  189.  
  190.         BESCHREIBUNG ...  ermittelt das aktuelle Datum und wandelt es
  191.                           in eine Zeichenkette um. Das Aussehen der
  192.                           Zeichenkette wird durch die typisierte Konstante
  193.                           DateFormat bestimmt. Das Zeichen der typisierten
  194.                           Konstante DateSeperator wird zum Trennen der
  195.                           einzelnen Einträge verwendet.
  196.  
  197.         DEKLARATION  ...  Function GetCurrentDateString : String;
  198.  
  199.         PARAMETER    ...  keine
  200.  
  201.         ERGEBNIS     ...  eine Variable des Typs STRING, die das Datum
  202.                           enthält. Die Zeichenkette hat folgenden Aufbau:
  203.                           DateFormat = European
  204.                              'DD.MM.YY'
  205.                           DateFormat = American
  206.                              'MM.DD.YY'
  207.                           DateFormat = Japanese
  208.                              'YY.MM.DD'
  209.                           führende Leerzeichen werden durch Nullen ersetzt.
  210.  
  211.         ===============================================================
  212.         GetDate
  213.         ---------------------------------------------------------------
  214.         ERSTAUTOR    ...  Peter Holschbach, 2:2450/660.3 @ FidoNet
  215.  
  216.         ERSTDATUM    ...  07.07.1994    LETZTE ÄNDERUNG ...  07.07.1994
  217.  
  218.         MODIFIKATION ...
  219.         ---------------------------------------------------------------
  220.  
  221.         BESCHREIBUNG ...  ermittelt das aktuelle Datum.
  222.  
  223.         DEKLARATION  ...  Procedure GetDate (Var Year,Month,Day,DayOfWeek
  224.                                                                   : Word);
  225.  
  226.         PARAMETER    ...  Year      - Jahr
  227.                           Month     - Monat
  228.                           Day       - Tag
  229.                           DayOfWeek - Wochentag
  230.  
  231.         ERGEBNIS     ...  wie die entsprechende Prozedur der Unit DOS
  232.  
  233.         ===============================================================
  234.         GetDateString
  235.         ---------------------------------------------------------------
  236.         ERSTAUTOR    ...  Peter Holschbach, 2:2450/660.3 @ FidoNet
  237.  
  238.         ERSTDATUM    ...  26.06.1994    LETZTE ÄNDERUNG ...  26.06.1994
  239.  
  240.         MODIFIKATION ...
  241.         ---------------------------------------------------------------
  242.  
  243.         BESCHREIBUNG ...  wandelt das übergebene Datum in eine
  244.                           Zeichenkette.
  245.                           (siehe GetCurrentDateString)
  246.  
  247.         DEKLARATION  ...  function GetDateString (Year,Month,Day : Word)
  248.                                                                : String;
  249.  
  250.         PARAMETER    ...  Year  - Jahr    (mit oder ohne Jahrtausend)
  251.                           Month - Monat
  252.                           Day   - Tag
  253.  
  254.         ERGEBNIS     ...  (siehe GetCurrentDateString)
  255.  
  256.         ===============================================================
  257.         GetCurrentTimeString
  258.         ---------------------------------------------------------------
  259.         ERSTAUTOR    ...  Peter Holschbach, 2:2450/660.3 @ FidoNet
  260.  
  261.         ERSTDATUM    ...  26.06.1994    LETZTE ÄNDERUNG ...  26.06.1994
  262.  
  263.         MODIFIKATION ...
  264.         ---------------------------------------------------------------
  265.  
  266.         BESCHREIBUNG ...  bestimmt die aktuelle Uhrzeit und gibt sie
  267.                           als Zeichenkette zurück. Als Trennzeichen
  268.                           wird das Zeichen der typisierten Konstanten
  269.                           TimeSeperator verwendet.
  270.  
  271.         DEKLARATION  ...  function GetCurrentTimeString : String;
  272.  
  273.         PARAMETER    ...  keine
  274.  
  275.         ERGEBNIS     ...  eine Variable des Typs STRING, die die Uhr-
  276.                           zeit enthält. Die Zeichenkette ist wie folgt
  277.                           aufgebaut:
  278.                                    'hh:mm:ss'
  279.                           führende Leerzeichen werden durch eine Null
  280.                           ersetzt.
  281.  
  282.  
  283.         ===============================================================
  284.         GetTime
  285.         ---------------------------------------------------------------
  286.         ERSTAUTOR    ...  Peter Holschbach, 2:2450/660.3 @ FidoNet
  287.  
  288.         ERSTDATUM    ...  07.07.1994    LETZTE ÄNDERUNG ...  07.07.1994
  289.  
  290.         MODIFIKATION ...
  291.         ---------------------------------------------------------------
  292.  
  293.         BESCHREIBUNG ...  liefert die aktuelle Uhrzeit
  294.  
  295.         DEKLARATION  ...  Procedure GetTime (Var hour,minute,second,
  296.                                                  Sec100:Word);
  297.  
  298.         PARAMETER    ...  hour    - Stunde
  299.                           minute  - Minute
  300.                           second  - Sekunde
  301.                           Sec100  - 1/100 Sekunden
  302.  
  303.         ERGEBNIS     ...  wie die entsprechende Prozedur der Unit DOS
  304.  
  305.  
  306.  
  307.         ===============================================================
  308.         GetTimeString
  309.         ---------------------------------------------------------------
  310.         ERSTAUTOR    ...  Peter Holschbach, 2:2450/660.3 @ FidoNet
  311.  
  312.         ERSTDATUM    ...  26.06.1994    LETZTE ÄNDERUNG ...  26.06.1994
  313.  
  314.         MODIFIKATION ...
  315.         ---------------------------------------------------------------
  316.  
  317.         BESCHREIBUNG ...  liefert die übergebene Uhrzeit als Zeichen-
  318.                           kette zurück.
  319.  
  320.         DEKLARATION  ...  function GetTimeString (hour,minute,second:Word)
  321.                                                                : String;
  322.  
  323.         PARAMETER    ...  hour    - Stunde
  324.                           minute  - Minute
  325.                           second  - Sekunde
  326.  
  327.         ERGEBNIS     ...  siehe GetCurrentTimeString
  328.  
  329.         ===============================================================
  330.         GetUnixTime
  331.         ---------------------------------------------------------------
  332.         ERSTAUTOR    ...  Peter Holschbach, 2:2450/660.3 @ FidoNet
  333.  
  334.         ERSTDATUM    ...  24.08.1994    LETZTE ÄNDERUNG ...
  335.  
  336.         MODIFIKATION ...
  337.         ---------------------------------------------------------------
  338.  
  339.         BESCHREIBUNG ...  liefert das übergebene Datum und die
  340.                           übergebene Uhrzeit im Unix typischen
  341.                           Format (als Sekunden seit dem 1.1.1970)
  342.                           zurück.
  343.  
  344.         DEKLARATION  ...  GetUnixTime(Year,Month,Day,Hour,
  345.                                       Minute,Second : Word) : LongInt;
  346.  
  347.         PARAMETER    ...  Year   - das Jahr (mit Jahrtausend !)
  348.                           Month  - der Monat
  349.                           Day    - der Tag
  350.                           Hour   - die Stunde
  351.                           Minute - die Minute
  352.                           Second - die Sekunde
  353.                           
  354.         ERGEBNIS     ...  LongInt im Unix-Format
  355.  
  356.         ===============================================================
  357.         IsLeapYear
  358.         ---------------------------------------------------------------
  359.         ERSTAUTOR    ...  Peter Holschbach, 2:2450/660.3 @ FidoNet
  360.  
  361.         ERSTDATUM    ...  26.06.1994    LETZTE ÄNDERUNG ...  26.06.1994
  362.  
  363.         MODIFIKATION ...
  364.         ---------------------------------------------------------------
  365.  
  366.         BESCHREIBUNG ...  prüft ob das angegebene Jahr ein Schaltjahr
  367.                           ist.
  368.  
  369.         DEKLARATION  ...  function IsLeapYear (Year : Word): Boolean;
  370.  
  371.         PARAMETER    ...  Year - das Jahr (mit Jahrtausend !)
  372.  
  373.         ERGEBNIS     ...  TRUE - wenn es ein Schaltjahr ist
  374.  
  375.         ===============================================================
  376.         ValidDate
  377.         ---------------------------------------------------------------
  378.         ERSTAUTOR    ...  Peter Holschbach, 2:2450/660.3 @ FidoNet
  379.  
  380.         ERSTDATUM    ...  17.10.1994    LETZTE ÄNDERUNG ...
  381.  
  382.         MODIFIKATION ...
  383.         ---------------------------------------------------------------
  384.  
  385.         BESCHREIBUNG ...  prüft ob das übergeben Datum sinnvolle
  386.                           Daten enthält. Alle Rückgabewerte ungleich
  387.                           0 zeigen einen Fehler an.
  388.                           Zuerst wird geprüft ob der Monat im Bereich
  389.                           [1..12] liegt, und dann ob der Tag im Bereich
  390.                           [1..Tage des Monats] liegt. 
  391.  
  392.         DEKLARATION  ...  function  ValidDate (Year,Month,Day : Word):Byte;
  393.  
  394.         PARAMETER    ...  Year  -  Jahr mit Jahrtausend
  395.                           Month -  Monat
  396.                           Day   -  Tag
  397.  
  398.         ERGEBNIS     ...  0 = alles OK
  399.                           2 = Fehler bei der Angabe des Monats
  400.                           3 = Fehler bei der Angabe des Tages
  401.                           
  402.         ===============================================================
  403.         WeekOfYear
  404.         ---------------------------------------------------------------
  405.         ERSTAUTOR    ...  Peter Holschbach, 2:2450/660.3 @ FidoNet
  406.  
  407.         ERSTDATUM    ...  26.06.1994    LETZTE ÄNDERUNG ...  17.10.1994
  408.  
  409.         MODIFIKATION ...  Algorithmus war falsch
  410.         ---------------------------------------------------------------
  411.  
  412.         BESCHREIBUNG ...  bestimmt die Kalenderwoche für das übergeben
  413.                           Datum. ACHTUNG ! Die erste Kalenderwoche
  414.                           beginnt am ersten Montag des Jahres.
  415.  
  416.         DEKLARATION  ...  function WeekOfYear (Year,Month,Day : Word):Byte;
  417.  
  418.         PARAMETER    ...  Year  -  Jahr mit Jahrtausend
  419.                           Month -  Monat
  420.                           Day   -  Tag
  421.  
  422.         ERGEBNIS     ...  die Kalenderwoche (1..52)
  423.  
  424.  
  425.      4. Beispiele:
  426.      -------------
  427.         ===============================================================
  428.         DayOfWeek
  429.         ---------------------------------------------------------------
  430.  
  431.         Writeln (DayOfWeek (1994,3,7));                  { ergibt: 1 }
  432.         Writeln (CDayOfWeekGerman[DayOfWeek (1994,7,3)]);{ ergibt: 'Son'}
  433.  
  434.         ===============================================================
  435.         DayOfYear
  436.         ---------------------------------------------------------------
  437.  
  438.         Writeln (DayOfYear (1994,7,3));    {ergibt: 184}
  439.  
  440.         ===============================================================
  441.         GetCurrentDateString
  442.         ---------------------------------------------------------------
  443.  
  444.         Writeln (GetCurrentDateString);  {ergibt: '03.07.94'}
  445.         DateFormat := American;
  446.         Writeln (GetCurrentDateString);  {ergibt: '07.03.94'}
  447.         DateFormat := European;
  448.         DateSeperator := '/';
  449.         Writeln (GetCurrentDateString);  {ergibt: '03/07/94'}
  450.  
  451.         ===============================================================
  452.         GetDateString
  453.         ---------------------------------------------------------------
  454.  
  455.         Writeln (GetDateString (94,7,3)); {ergibt: '03.07.94'}
  456.  
  457.         ( siehe auch GetCurrentDateString )
  458.  
  459.         ===============================================================
  460.         GetCurrentTimeString
  461.         ---------------------------------------------------------------
  462.  
  463.         Writeln (GetCurrentTimeString); {ergibt: '00:05:13'}
  464.         TimeSeperator := '.';
  465.         Writeln (GetCurrentTimeString); {ergibt: '00.05.13'}
  466.  
  467.         ===============================================================
  468.         GetTimeString
  469.         ---------------------------------------------------------------
  470.  
  471.         Writeln (GetTimeString (8,59,59));  {ergibt: '08:59:59'}
  472.  
  473.          (siehe auch GetCurrentTimeString )
  474.  
  475.         ===============================================================
  476.         GetUnixTime
  477.         ---------------------------------------------------------------
  478.  
  479.         Writeln (GetUnixTime (1970,1,1,0,0,1)); {Ergebnis: 1}
  480.         ===============================================================
  481.         IsLeapYear
  482.         ---------------------------------------------------------------
  483.  
  484.         Writeln (IsLeapYear (1994));  {ergibt: FALSE }
  485.  
  486.         ===============================================================
  487.         WeekOfYear
  488.         ---------------------------------------------------------------
  489.  
  490.         Writeln (WeekOfYear (1994,7,3));  {ergibt: 26}
  491.  
  492.         ---------------------------------------------------------------
  493.  
  494.       5. History:
  495.       -----------
  496.  
  497.         Neuerungen nach Release ...
  498.         ---------------------------
  499.         ... 1.01   - DayDiff              Anzahl der Tage zwischen zwei
  500.                                           Daten.
  501.                    - GetDate              | Ersatz der Prozeduren aus der
  502.                    - GetTime              | Unit DOS
  503.                    - DayNumber            Tage seit dem 01.01.0000
  504.                    - CDayOfWeekAmerican   war CDayOfWeekAme
  505.                      CDayOfWeekGerman     war CDayOfWeekGer
  506.  
  507.         ... 1.02   - Kosmetische Änderungen:
  508.                        - CDayOfWeekGerman  war ein Array of String [10]
  509.                        - in DayNumber war ein casting mit longint
  510.                          notwendig damit keine Bereichsüberschreitung
  511.                          erkannt wird
  512.                    - Bugs:
  513.                        - DayOfWeek lieferte den falschen Wert zurück
  514.                        - WeekOfYear falscher Algorithmus
  515.                    - Neu:
  516.                        - Funktion ValidDate
  517.                        - Funktion GetUnixTime
  518.         ... 1.03   - Neu:
  519.                        - Konstanten: CMonthAmerican und CMonthGerman
  520.  
  521.  
  522.   ==========================================================================
  523.  
  524.                   /////////////////////\\\\\\\\\\\\\\\\\\\\\\\
  525.                    Ende der Dokumentation zur FIDO Unit FDATE
  526.                   \\\\\\\\\\\\\\\\\\\\\///////////////////////
  527.